//
// Author: Vladimir Migashko <migashko@gmail.com>, (C) 2011
//
// Copyright: See COPYING file that comes with this distribution
//

#ifndef FASYS_LIBS_API_MESSAGE_LIST_HPP
#define FASYS_LIBS_API_MESSAGE_LIST_HPP

#include "types.hpp"
#include "message.hpp"
#include <list>

namespace fasys{ namespace api{

struct message_list_item
  : message_base
{
  /**Идентификатрор сообщения. Уникальный для канала. */
  message_id_t  message_id;
  /** Время на сервере, когда сообщение умрет */
  time_t        death_time;
  /** Интервал времени до смерти сообщения */
  time_t        death_timespan;
  /** контент сообщения. */
  data_t        content;

  message_list_item()
    : message_base()
    , message_id(0)
    , death_time(0)
    , death_timespan(0)
  {}
};

struct message_list_request
{
  std::string channel;
  size_t      limit;
  size_t      offset;
  message_list_request()
    : limit(0)
    , offset(0)
  {}
};

struct message_list_response
  : message_list_request
{
  typedef std::list<message_list_item> message_list_type;
  /**Идентификатрор канала. Уникальный для клиента. */
  channel_id_t  channel_id;
  /**Количество сообщений в канале на момент публикации */
  size_t count;
  /** Список сообщений */
  message_list_type message_list;
};


}}

#endif

